{{tag>Precise Trusty}}

-----
======Créer un module sword pour les logiciels de lecture biblique======

Le projet SWORD est un projet de logiciel libre de l'organisation **CrossWire Bible Society Bible**. Son but est de créer des outils libres (couverts par la licence GPL) multiplate-formes, permettant ainsi aux programmeurs et aux sociétés bibliques d'écrire plus facilement et plus rapidement de nouveaux logiciels d'étude de la Bible.\\
Le cœur du projet SWORD est une bibliothèque multiplate-forme écrite en C++, offrant un accès, des fonctions de recherche et d'autres services à une collection grandissante de plus de 200 textes dans plus de 50 langues. Tout logiciel basé sur leur API peut utiliser cette collection.\\

Le projet est un des premiers à avoir contribué au développement du format **OSIS** (pour Open Scripture Information Standard), un langage XML pour coder les écritures (traductions de la Bible, commentaires etc). 
[[:Xiphos]] et [[Bibletime]] sont des interfaces à Sword, qui permettent son utilisation graphique.\\
Cette page a pour but de vous décrire la procédure pour créer un module biblique avec les outils Sword.

=====Pré-requis=====

  * Disposer des [[:sudo|droits d'administration]] ;
  * Disposer d'une connexion à Internet configurée et activée;
  * [[:tutoriel:comment_installer_un_paquet|Installer le paquet]] des outils sword **[[apt>libsword-utils]]** et éventuellement **[[apt>libsword-dev]]**.

=====Création du module=====
Un module SWORD peut désigner un texte biblique (i.e. une traduction de la Bible), un commentaire, un dictionnaire, un glossaire ou un calendrier.
Il existe plusieurs formats pour créer un module, **vpl**, **imp**, et **osis** entre autre. Ici nous favoriserons le format **osis** et la création d'un module biblique. Vous trouverez [[http://www.crosswire.org/wiki/File_Formats|ici]] toutes les informations sur les divers formats possibles.

====Créer le fichier sfm====
La première chose à faire est de télécharger ce [[http://paratext.org/system/files/usfmReference2_4.pdf|PDF]] qui vous donnera toutes les références nécessaires à la création d'un fichier **sfm**, ainsi que les codes propres à chaque livre biblique.
Dans un premier temps lorsque vous aurez récupéré ou converti en fichiers texte les livres bibliques (vous pouvez utiliser **unoconv** pour cela), il faudra renommer chaque livre par son numéro d'identification, comme indiqué dans le pdf plus haut.
Par exemple pour la Genèse vous nommerez votre fichier **01_GEN_nom_de_bible.sfm**.
Cela fait, modifier votre fichier texte, pour qu'il ressemble à ceci:
<file>
\id GEN
\mt1 LA GENÈSE
\c 1
\p  
\mt2 I — LES ORIGINES DE L’HUMANITÉ
\mt2  La Parole de Dieu ordonne le monde
\v 1 Au commencement Dieu créa le ciel et la terre.
\v 2 La terre était informe et vide, les ténèbres couvraient l’abîme, et l’Esprit de Dieu planait au-dessus des eaux.
\v 3 Dieu dit : “Que la lumière soit !” Et la lumière fut.
\v 4 Dieu vit que la lumière était bonne, et Dieu sépara la lumière d’avec les ténèbres.</file>
Chaque numéro de chapitre est précédé par **\c**, puis suivi par **\p**.
Chaque verset est précédé par **\v**. Vous trouverez la signification des autres codes dans le **PDF**.
Pour faire cela rapidement il peut être utile d'utiliser [[:sed]], puis **grep** pour les éventuelles erreurs.
Ce petit script peut vous être utile, à vous de l'adapter à votre fichier de base:
<code bash>
#!/bin/bash
#Pour supprimer les bom des fichiers utf8
find . -type f -exec sed 's/\xEF\xBB\xBF//g' -i.bak {} \; -exec rm {}.bak \;
# pour chaque fichier dans ls *.sfm
for FILE in `ls *.sfm` ; do
#Commence par mettre à la ligne chaque verset
  sed -i 's/ [0-9][0-9] /\n&/g' $FILE
  sed -i 's/ [0-9] /\n&/g' $FILE
#Supprime les espaces éventuel en début de ligne
  sed -i 's/^[ ]*//g' $FILE
#Supprime les lignes vide et ajoute "\id \mt1" à la première ligne
  sed -i '/./!d; 1i\\\id \n\\mt1 ' $FILE
#Colle la ligne 2 et 3
  sed -i '/\\mt1$/N; s/\n/ /' $FILE
#Ajout "\v " devant chaque ligne commençant par un puis deux chiffres suivit d'un espace et de texte
  sed -i 's/^[0-9] [a-z]*/\\v &/g' $FILE
  sed -i 's/^[0-9][0-9] [a-z]*/\\v &/g' $FILE
#ajoute \c devant chaque ligne commencant par deux chiffre
  sed -i 's/^[0-9]+\n/\\c &\n\\p/g' $FILE
  #rename 's/txt/sfm/g' $FILE Commande à utiliser si vous voulez travailler avec des fichier .txt
  # Mettre \mt1 devant les noms des livres bibliques
  #sed -i 's/^[A-Z]/\\mt1 &/g' $FILE
  #sed -i 's/^[1-2] [A-Z]/\\mt1 &/g' $FILE
done
</code>

Attention au possible problème d'espace (comme les espaces cadratin) qui peuvent se glisser dans votre texte. Dans ce cas utilisez l'expression régulière **\s** pour les supprimer ou les remplacer, plutôt que la vrai espace dans le script sed...
Il vous faudra encore compléter manuellement le code du livre biblique à la première ligne du fichier sfm après **\id**.

====Convertir au format osis====
Une fois vos fichiers bien codés en **.sfm** il faudra les convertir en **osis**. Pour cela, téléchargez le script **usfm2osis.py**
[[https://github.com/chrislit/usfm2osis/blob/master/scripts/usfm2osis.py|ici]]. [[:archivage|Décompressez-le]] dans le dossier contenant les fichier **.sfm**.
Lancez-le comme suit:
<code>./usfm2osis.py Nom_de_votre_bible -x *sfm</code>
L'option -x est obligatoire sinon le script ne fonctionne pas.
Vérifiez qu'il ne vous retourne pas d'erreurs, si c'est le cas, corrigez-les. Si vous ne savez pas dans quel fichier se trouve l'erreur, utilisez la commande **grep** pour les trouver.
Les erreurs fréquentes sont un code collé à un chiffre, par exemple //\v1// au lieu de //\v 1//, ou un chiffre collé à un verset, par exemple //\v 1Alors...// au lieu de //\v 1 Alors...//.

====Créer le module final====
===L'archive===
Maintenant que votre fichier osis est prêt il ne vous reste plus qu'à exécuter les outils sword, dans notre cas il s'agit du script //osis2mod//. Pour créer l'archive, toujours dans le dossier où se trouve les fichiers sfm, créez un dossier avec le nom de votre bible, puis lancez la commande suivante:
<code>osis2mod Le_nom_du_dossier_de_votre_bible/ votre_fichier_osis.xml -z -v Catholic</code>

Ici à titre d'exemple l'option -v est suivit de Catholic, cela correspond au type de versification de votre bible. Avec la commande :
<code>osis2mod -h</code>
Vous pourrez voir tous les types de versification possible. Vous trouverez [[http://www.crosswire.org/wiki/Alternate_Versification|ici]] la description complète des diverses versifications. Placez le dossier contenant l'archive dans //./sword/modules/texts/ztext/// ou si vous souhaitez le rendre accéssible pour tous les utilisateurs, ///usr/share/sword/modules/texts/ztext///.

===Le fichier .conf===
Une fois l'archive créée, il vous faudra encore créer le fichier **.conf** de votre bible, fichier à mettre dans le dossier //./sword/mods.d// ou pour tous les utilisateurs dans ///usr/share/sword/mods.d///. Le contenu est le suivant, en adaptant à votre bible:
<file>
[Nom de la bible]
DataPath=./modules/texts/ztext/Dossier de l'archive/
ModDrv=zText
Encoding=UTF-8
BlockType=BOOK
CompressType=ZIP
SourceType=OSIS
Lang=la langue de votre bible, fr pour le français
GlobalOptionFilter=
SwordVersionDate=2012-03-08
Version=0.1
History_0.1=Version de base
TextSource=LBOL
LCSH=
DistributionLicense=copyright
Description=
About=
Versification=Catholic, ou une autre versification si vous avez fait un autre choix
InstallSize=la taille de votre module
</file>
Vous trouverez [[http://www.crosswire.org/wiki/DevTools:conf_Files|ici]] toutes les indications sur le fichier**.conf**.

=====Voir aussi====
  * [[http://www.crosswire.org/wiki/Converting_SFM_Bibles_to_OSIS|Procédure complète sur le site officiel]] (en),
  * [[http://www.crosswire.org/sword/index.jsp|Le Projet Sword]],
  * [[https://github.com/chrislit/usfm2osis|Le script usfm2osis]].


--------------
Contributeur : [[:utilisateurs:l_africain|L'Africain]]